#ifndef CHOOSECITYDIALOG_H
#define CHOOSECITYDIALOG_H

#include <QDialog>
#include <QGroupBox>

namespace Ui {
class ChooseCityDialog;
}

class FirstWindow;
class FlightsCheckWindow;
class ChooseCityDialog : public QDialog
{
    Q_OBJECT

public:
    friend FirstWindow;
    friend FlightsCheckWindow;
    explicit ChooseCityDialog(QWidget *parent = nullptr);
    ~ChooseCityDialog();
signals:
    // 定义一个信号，传递按钮的文本
    void citySelected(const QString &cityName);

private slots:
    // 按钮点击时发出信号
    void onCityButtonClicked();

private:
    Ui::ChooseCityDialog *ui;
    void populateCityGrid(QGroupBox *groupBox, QMap<QString, QStringList> cityMap);
    void populateCityGrid(QGroupBox *groupBox, const QStringList &cityList);
    // 准备城市数据（分组）
    QMap<QString, QStringList> cityMap1 = {
        {"A",
         {"中国澳门",
          "阿里",
          "安康",
          "阿克苏",
          "阿勒泰",
          "安庆",
          "鞍山",
          "安阳",
          "阿尔山",
          "阿拉尔",
          "阿拉善左",
          "阿拉善右"}},
        {"B",
         {"北京",
          "包头",
          "北海",
          "保山",
          "白山",
          "白城",
          "百色",
          "博乐",
          "布尔津",
          "巴彦淖尔",
          "巴中",
          "毕节"}},
        {"C",
         {"重庆",
          "成都",
          "长治",
          "长春",
          "常德",
          "赤峰",
          "长沙",
          "朝阳",
          "常州",
          "池州",
          "承德",
          "昌都",
          "郴州",
          "沧源"}},
        {"D",
         {"大连", "敦煌", "大理", "迪庆", "大同", "丹东", "大庆", "东营", "稻城", "达州", "德令哈"}},
        {"E", {"恩施", "鄂州", "鄂尔多斯", "额济纳旗", "二连浩特"}},
        {"F", {"佛山", "富蕴", "阜阳", "福州", "抚远"}}};

    QMap<QString, QStringList> cityMap2
        = {{"G",
            {"广州", "桂林", "贵阳", "格尔木", "广元", "赣州", "固原", "中国高雄", "甘孜", "果洛"}},
           {"H", {"哈尔滨", "杭州", "黄山", "海口", "呼和浩特", "汉中",     "海拉尔", "邯郸",
                  "合肥",   "黑河", "怀化", "哈密", "惠州",     "淮安",     "荆泽",   "花土沟",
                  "和静",   "和田", "衡阳", "河池", "霍林郭勒", "中国花莲", "红原"}},
           {"J",
            {"九江",
             "九寨沟",
             "济南",
             "鸡西",
             "景德镇",
             "井冈山",
             "佳木斯",
             "济宁",
             "嘉峪关",
             "锦州",
             "荆州",
             "揭阳",
             "建三江"}}};
    QMap<QString, QStringList> cityMap3
        = {{"K", {"昆明", "喀什", "克拉玛依", "库车", "库尔勒", "凯里", "康定"}},
           {"L",
            {"丽江",
             "拉萨",
             "兰州",
             "林芝",
             "临汾",
             "连云港",
             "柳州",
             "泸州",
             "临沂",
             "六盘水",
             "临洮",
             "荔波",
             "阆中",
             "黎平",
             "潞州",
             "吕梁",
             "陇南",
             "龙岩"}},
           {"M",
            {"牡丹江", "漠河", "绵阳", "满洲里", "茂台", "梅州", "芒市", "中国马公", "中国马祖"}},
           {"N", {"南京", "南通", "宁波", "南昌", "南充", "南宁", "南阳", "宁蒗", "中国南竿"}}};
    QMap<QString, QStringList> cityMap4 = {{"P", {"攀枝花", "普洱"}},
                                           {"Q",
                                            {"青岛",
                                             "琼海",
                                             "秦皇岛",
                                             "齐齐哈尔",
                                             "且末",
                                             "庆阳",
                                             "泉州",
                                             "衢州",
                                             "祁连",
                                             "奇台",
                                             "黔江"}},
                                           {"R", {"日喀则", "日照", "若羌"}},
                                           {"S",
                                            {"上海",
                                             "深圳",
                                             "三亚",
                                             "上饶",
                                             "韶关",
                                             "石河子",
                                             "石家庄",
                                             "三明",
                                             "山南",
                                             "沈阳",
                                             "十堰",
                                             "神农架",
                                             "邵阳",
                                             "松原",
                                             "朔州",
                                             "萨车",
                                             "泉州"}},
                                           {"T",
                                            {"天津",
                                             "太原",
                                             "塔城",
                                             "通化",
                                             "通辽",
                                             "天水",
                                             "唐山",
                                             "台州",
                                             "中国台北",
                                             "铜仁",
                                             "腾冲",
                                             "中国台南",
                                             "中国台东",
                                             "中国台中",
                                             "塔什库尔干",
                                             "吐鲁番",
                                             "图木舒克",
                                             "汤阴"}},
                                           {"W",
                                            {"无锡",
                                             "武夷山",
                                             "乌鲁木齐",
                                             "五大连池",
                                             "潍坊",
                                             "武汉",
                                             "芜湖",
                                             "威海",
                                             "乌兰浩特",
                                             "万州",
                                             "温州",
                                             "梧州",
                                             "乌海",
                                             "文山",
                                             "乌拉特中",
                                             "武隆",
                                             "巫山",
                                             "乌兰察布"}}};
    QMap<QString, QStringList> cityMap5 = {{"X",
                                            {"西安",
                                             "厦门",
                                             "西双版纳",
                                             "中国香港",
                                             "西宁",
                                             "西昌",
                                             "襄阳",
                                             "夏河",
                                             "锡林浩特",
                                             "信阳",
                                             "徐州",
                                             "忻州",
                                             "邢台",
                                             "兴义",
                                             "新源",
                                             "湘西土家",
                                             "西安",
                                             "迪庆"}},
                                           {"Y",
                                            {"扬州", "银川", "延安", "运城", "宜宾", "宜昌", "伊春",
                                             "宜春", "延吉", "榆林", "伊宁", "烟台", "义乌", "岳阳",
                                             "永州", "玉林", "盐城", "营口", "于田", "玉树"}},
                                           {"Z",
                                            {"舟山",
                                             "张家界",
                                             "珠海",
                                             "湛江",
                                             "张家口",
                                             "昭通",
                                             "中卫",
                                             "遵义",
                                             "郑州",
                                             "张掖",
                                             "扎兰屯",
                                             "昭苏",
                                             "怀化"}}};

    QMap<QString, QStringList> cityMap6 = {
        {"亚洲", {"东京",       "大阪",         "札幌",   "名古屋", "福冈",   "冲绳",
                  "曼谷",       "普吉岛",       "清迈",   "首尔",   "济州市", "釜山",
                  "吉隆坡",     "哥打京那巴鲁", "槟城州", "斗湖",   "新加坡", "巴厘岛",
                  "雅加达",     "胡志明市",     "河内",   "芽庄",   "迪拜",   "马累",
                  "伊斯坦布尔", "马尼拉市",     "金边",   "利雅得", "万象",   "科伦坡"}}};

    QMap<QString, QStringList> cityMap7 = {
        {"欧洲", {"伦敦",       "曼彻斯特", "爱丁堡",   "莫斯科",     "海参崴",     "圣彼得堡",
                  "伊尔库茨克", "巴黎",     "巴塞罗那", "马德里",     "罗马",       "米兰",
                  "法兰克福",   "慕尼黑",   "柏林",     "奥斯陆",     "特罗姆瑟",   "雷克雅未克",
                  "贝尔格莱德", "苏黎世",   "日内瓦",   "阿姆斯特丹", "布达佩斯",   "赫尔辛基",
                  "雅典",       "第比利斯", "里斯本",   "哥本哈根",   "斯德哥尔摩", "维也纳"}}};

    QMap<QString, QStringList> cityMap8 = {{
        "美洲", // The key remains "热门" meaning "popular"
        {"洛杉矶",     "纽约",         "旧金山",     "檀香山",
         "波士顿",     "西雅图",       "拉斯维加斯", // Cities in the USA
         "芝加哥",     "华盛顿",       "奥兰多",     "迈阿密",
         "达拉斯",     "休斯敦",       "亚特兰大", // More cities in the USA
         "塞班岛",     "底特律",       "费城",       "罗利",
         "多伦多",     "温哥华",       "蒙特利尔", // Cities in Canada and the USA
         "卡尔加里",   "墨西哥城",     "坎昆",       "圣保罗",
         "里约热内卢", "布宜诺斯艾利",           // Cities in Mexico, Brazil, Argentina
         "圣地亚哥",   "利马",         "哈瓦那"} // Cities in Chile, Peru, Cuba
    }};

    QMap<QString, QStringList> cityMap9 = {
        {"非洲",
         {
             "开罗",       "赫尔格达", "沙姆沙伊赫", "阿斯旺",       "卢克索",       "卡萨布兰卡",
             "马拉喀什",   "拉巴特",   "内罗毕",     "达累斯萨拉姆", "乞力马扎罗区", "桑给巴尔",
             "约翰内斯堡", "开普敦",   "拉各斯",     "阿布贾",       "毛里求斯",     "亚的斯亚贝巴",
             "卢萨卡",     "马埃岛",   "阿尔及尔",   "哈拉雷",       "突尼斯",       "塔那那利佛",
             "阿克拉",     "恩德培",   "罗安达",     "科纳克里",     "阿比让",       "达喀尔",
         }}};

    QMap<QString, QStringList> cityMap10 = {
        {"大洋洲",
         {"悉尼",       "墨尔本",     "布里斯班", "珀斯",       "阿德莱德",   "凯恩斯",
          "黄金海岸",   "堪培拉",     "霍巴特",   "普罗瑟派恩", "汉密尔顿岛", "达尔文",
          "艾尔斯岩",   "朗塞斯顿",   "奥克兰",   "基督城",     "皇后镇",     "惠灵顿",
          "达尼丁",     "北帕默斯顿", "楠迪",     "苏瓦",       "科罗尔",     "帕皮提",
          "莫尔兹比港", "维拉港",     "霍尼亚拉", "阿皮亚",     "拉罗汤加岛", "努库阿洛法"}}};

    static QMap<QString, QString> cityMapTranslations;
    static QMap<QString, QString> englishToChineseMap;
    void initializeMaps();
};

#endif // CHOOSECITYDIALOG_H
